package com.group4.datafactorybackend.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.group4.datafactorybackend.common.R;
import com.group4.datafactorybackend.entity.DO.DataSourceMessageDO;
import com.group4.datafactorybackend.entity.DTO.CreateOrUpdateDataSourceMessageDTO;
import com.group4.datafactorybackend.entity.DTO.BatchReleaseOrOutageDTO;
import com.group4.datafactorybackend.entity.DTO.ConnectTestDTO;
import com.group4.datafactorybackend.entity.DTO.SelectDataSourceMessageDTO;

/**
 * @author aKUN
 * @date 2022/7/28
 * @description 数据源管理业务逻辑接口层
 */
public interface DataSourceService extends IService<DataSourceMessageDO> {

    /**
     * @author aKUN
     * @param selectDataSourceMessageDTO 用于查询和分页展示
     * @return R
     * @description 数据库管理分页
     **/
    R<?> selectDateSourceByPage(SelectDataSourceMessageDTO selectDataSourceMessageDTO);

    /**
     * @author 牟屿洋
     * @param createOrUpdateDataSourceMessageDTO 新增、编辑数据源信息接收参数实体类
     * @return R
     * @description 编辑数据源信息
     */
    R<?> updateDataSource(CreateOrUpdateDataSourceMessageDTO createOrUpdateDataSourceMessageDTO);

    /**
     * @author 牟屿洋
     * @param batchReleaseOrOutageDTO （批量）发布/停用接收参数实体类
     * @return R
     * @description 发布/停用数据源信息
     */
    R<?> releaseOrOutage(BatchReleaseOrOutageDTO batchReleaseOrOutageDTO);

    /**
     * @author OKer
     * @return R
     * @description 查询所有数据库类型
     **/
    R<?> findAllDatabaseType();

    /**
     * @author OKer
     * @param createOrUpdateDataSourceMessageDTO 新增、编辑数据源信息接收参数实体类
     * @return R
     * @description 新增数据源连接信息
     **/
    R<?> addDataSource(CreateOrUpdateDataSourceMessageDTO createOrUpdateDataSourceMessageDTO);

    /**
     * @author dwl
     * @param id 主键ID
     * @return R
     * @description 删除数据源
     */
    R<?> deleteSource(Long id);

    /**
     * @author 卑微小峰
     * @param connectTestDTO 数据源连通测试接收参数实体类
     * @return R
     * @description 连接测试数据源
     */
    R<?> connectTest(ConnectTestDTO connectTestDTO);
}
